home *** CD-ROM | disk | FTP | other *** search
/ Mission 3 / Mission 3.zip / Mission 3.iso / demovers / scripter / demo / saugfind.sic < prev    next >
Text File  |  1998-09-26  |  2KB  |  69 lines

  1. /*
  2.  * Dieses Skript durchsucht alle Filelisten eines bestimmten
  3.  * Ordners nach einem Pattern;
  4.  * Ausgegeben wird jeweils die Kopfzeile (Nummer, Archivname etc)
  5.  * sowie die Zeile der Beschreibung, in der das Pattern das erste
  6.  * mal vorkommt.
  7.  *
  8.  * Der Pfad zu den Filelisten ist unten an die eigene Pfadstruktur
  9.  * anzupassen (da könnte auch ein Fileselect-Aufruf stehen, was aber
  10.  * auf Dauer sicher zu nervig ist).
  11.  *
  12.  * Das Pattern wird vom Script per Fensterdialog erfragt und darf
  13.  * Wildcards (*, ?) enthalten.
  14.  */
  15.  
  16. path = "c:\\cat\\mff\\";                                // Diesen Pfad anpassen
  17.  
  18. temp = dialog.input("[SaugFind] Suchmaske:", "");       // Pattern holen
  19. mask = temp[1];
  20. skip = 1;
  21. filelist(files, path);                    // Verzeichnis
  22.  
  23. for (i = 0; i < files.length; i++) {            // über alle Dateien...
  24.     name = files[i, 0];
  25.     if (!(files[j, 3] & 16)             // Datei ist kein Ordner
  26.         && match(name, "*.lst")) {                  // aber eine Liste
  27.         printf("***** %s *****\n", name);
  28.         name = path + name;
  29.  
  30.         while (getline(name, line)) {        // Datei durchlesen
  31.  
  32.             /*
  33.              * Die Kopfzeilen einer Fileliste erkennt man am
  34.              * einfachsten daran, daß sie direkt mit einer Ziffer
  35.              * (erstes Zeichen der Filenummer) beginnen;
  36.              * solche Kopfzeilen merken wir uns für spätere Ausgaben
  37.              */
  38.             c = line[0];
  39.             if (c >= '0' && c <= '9') {
  40.                 head = line;
  41.                 skip = 0;
  42.             }
  43.  
  44.             /*
  45.              * Wenn gerade nicht vorgepult wird, dann testen wir,
  46.              * ob das Pattern auf die aktuelle Zeile paßt
  47.              */
  48.             if (skip == 0 && match(line, mask)) {
  49.                 /*
  50.                  * Wenn das Pattern in der Kopfzeile vorkommt,
  51.                  * dann geben wir nur die Kopfzeile aus, ansonsten
  52.                  * die Kopfzeile und die Beschreibungszeile
  53.                  */
  54.                 if (head == line)
  55.                     print(head);
  56.                 else
  57.                     printf("%s\n  (%s)\n", head, line);
  58.  
  59.                 /*
  60.                  * Da jede Kopfzeile nur einmal ausgegeben werden
  61.                  * soll, überspringen wir den Rest der Beschreibung
  62.                  */
  63.                 skip = 1;
  64.             }
  65.         }
  66.         fclose(name);
  67.     }
  68. }
  69.